perm filename DIPHON.SAI[5,ALS] blob sn#001154 filedate 1972-01-07 generic text, type T, neo UTF8
00100	BEGIN "DIPHONE" COMMENT 09-SEP-71;
00200	COMMENT Reads disk file "PHON" containing words and phonetic 
00300	  transcriptions.  Creates a disk file containing all words
00400	  having a given diphone.
00500	;
00600	
00700	REQUIRE "MACROS[SYS,JKS]" SOURCE_FILE;
00800	REQUIRE "COMSUB.HDR[SYS,JKS]" SOURCE_FILE;
00900	
01000	INTEGER BRK,EOF,I,L,COUNT,CHOICE,WORDNO;
01100	STRING TSTR,DPH1,DPH2,PH1,PH2,LIN,WORD,LIN1;
01200	
01300	SETBR;
01400	OPEN(DSK,"DSK",1,2,0,120,BRK,EOF);
01500	OPEN(DSKO,"DSK",1,0,2,120,BRK,EOF);
01600	OPEN(TTY,"TTY",1,1,1,120,BRK,EOF);
01700	
01800	CHOICE ← GETPARM("CHOICE",0);
01900	LOOKIN(DSK,TSTR←"PHON");
02000	DPH1 ← STRINGIN("First phoneme of diphone");
02100	IF EQU(DPH1,"#") THEN DPH1 ← "XX";
02200	DPH2 ← STRINGIN("Second phoneme of diphone");
02300	IF EQU(DPH2,"#") THEN DPH2 ← "XX";
02400	ENTEROUT(DSKO,TSTR←"D"&DPH1&DPH2&".LST");
02500	OUT(DSKO,DATIME("ALL")&CR&LF&LF&"Diphone: "&DPH1&"-"&DPH2&CR&LF&LF);
02600	
02700	EOF ← FALSE; COUNT ← WORDNO ← 0;
02750	
02800	WHILE ¬EOF DO
02900	BEGIN "READ"
03000	LIN ← INPUT(DSK,1);
03100	TSTR ← SCAN(LIN,6,BRK);
03200	IF TSTR≠NULL THEN BEGIN WORD ← TSTR; WORDNO ← WORDNO + 1 END;
03300	LIN1←WORD&TB&LIN;
03400	IF LIN[1 FOR 1]=TB THEN LIN←LIN[2 TO ∞];
03500	TSTR←SCAN(LIN,6,BRK);
03600	TSTR←SCAN(LIN,6,BRK);
03700	TSTR←SCAN(LIN,6,BRK);
03800	LIN←LIN&CR;
03900	BRK ← 0; PH1 ← "XX"; PH2 ← " ";
04000	WHILE (LENGTH(LIN)>0) AND ¬EQU(PH2,"XX") DO
04100	 BEGIN
04200	  IF BRK≠CR THEN PH2 ← SCAN(LIN,10,BRK)
04300	 ELSE PH2 ← "XX";
04400	  IF EQU(PH1,DPH1) AND EQU(PH2,DPH2) THEN
04500	   BEGIN
04600	    IF CHOICE THEN
04700	     BEGIN
04800	      OUT(TTY,CRLF&LIN1&" ");
04900	      IF YESORNO(NULL) THEN
05000	       BEGIN OUT(DSKO,LIN1&CRLF); COUNT←COUNT+1 END;
05100	     END
05200	     ELSE
05300	      BEGIN OUT(DSKO,LIN1&CRLF); COUNT←COUNT+1; OUT(TTY," "&CVS(WORDNO)) END;
05400	    DONE
05500	   END;
05600	  PH1←PH2;
05700	 END;
05800	IF INCHRS=" " THEN
05900	BEGIN OUT(TTY," RUN ABORTED. "); DONE END; C SPACE STOPS RUN;
06000	END "READ";
06100	
06200	CLOSE(DSKO);
06300	OUT(TTY,CRLF&"OUTPUT FILE: D"&DPH1&DPH2&".LST  "&CVS(COUNT)&" WORDS. ");
06400	
06500	END "DIPHONE";